AWS Elemental LinkのリージョントランスファーをAWS CLIでやってみた
はじめに
清水です。AWS Elemental MediaLive用のセットアップ済みライブエンコーダデバイスとして動作するAWS Elemental Link、リリース当初は購入時に指定したAWSリージョンでのみ動作する、という制限がありましたが、今年冒頭にこの使用リージョンを変更するリージョントランスファー機能がリリースされました。
上記エントリではAWSマネジメントコンソールから使用リージョンの変更(デバイスの別リージョンへのトランスファー)を行いました。また当時AWS CLIなどAPIでの実行方法についても調査してみたのですが、CloudTrailからTransferInputDevice
というイベントを確認するものの、実際の実行方法についてはドキュメントなどに記載がなく、確認することができませんでした。
それから2ヶ月ほど経ち、改めてAWS CLIのドキュメントなどを確認したところ、このLinkデバイスのリージョントランスファー機能についてもAPIでサポートされていることが確認できしまた。ということで本エントリではAWS CLIを用いてLinkデバイスの別リージョンへのトランスファー(転送)を行ってみたのでまとめてみたいと思います。
なお、改めてLinkデバイスのトランスファー機能についておさらいしておきますと、まずは本エントリでも扱っているリージョンのトランスファー(転送)機能があります。Linkデバイスを使用するリージョンを切り替える機能ですね。こちらはAWSマネジメントコンソールでの操作を冒頭に示したエントリにてまとめています。そしてもう1つのトランスファーとして、アカウントトランスファー(転送)機能があります。こちらはLinkデバイスを使用するAWSアカウントを変更する機能で、購入した際とは別のAWSアカウントで利用する場合にはこちらのアカウントトランスファーを利用します。アカウントトランスファーについては以下エントリをご参照ください。
TransferInputDevice APIのアップデートについて
AWS CLIでのLinkデバイスのリージョントランスファーを行う前に、これを実行するAPIのアップデートまわりについて確認しておきましょう。冒頭でも記しましたが、2ヶ月ほど前にAWSマネジメントコンソールからリージョントランスファー機能を確認した際には、APIでのリージョントランスファーは未サポートのようでした。この点についてざっと振り返っておきます。冒頭に示したこちらのエントリの「リージョントランスファーのAPIなどでの実行方法は?」の項目もあわせてご確認ください。
当時確認したAWS CLIのドキュメント、バージョンは2.1.21でした。そして現在latestとして確認できるのは2.1.32です。この2.1.32版のmedialive transfer-input-device
を確認すると、--target-region
というオプションがあり、「The target AWS region to transfer the device.」と説明があります。
- transfer-input-device — AWS CLI 2.1.32 Command Reference
- 2021/03/28時点で最新版の
transfer-input-device
のドキュメントページ (latest)
- 2021/03/28時点で最新版の
- transfer-input-device — AWS CLI 2.1.21 Command Reference
- バージョン2.1.21の
transfer-input-device
のドキュメントページ。--target-region
オプションはありません
- バージョン2.1.21の
AWS CLIのバージョンについてもう少し詳しく確認してみると、バージョン2.1.29のtransfer-input-device
には--target-region
オプションはなく、バージョン2.1.30から追加されていることがわかります。
- transfer-input-device — AWS CLI 2.1.29 Command Reference
- transfer-input-device — AWS CLI 2.1.30 Command Reference
AWS API Changesについても確認してみましょう。AWS Elemental MediaLiveのAPI、2021/03/05付けで「Medialive now supports the ability to transfer AWS Elemental Link devices to another region.」という情報があります。3月上旬にAPIの更新、ならびにAWS CLIへの追加があった、ということになりますね。
- AWS API Changes / AWS Elemental MediaLive
- AWS API Changes / 2021/03/05 - AWS Elemental MediaLive - 1 updated api methods
LinkデバイスのリージョントランスファーをAWS CLIでやってみた
APIのアップデート情報についても確認できました。それでは本題の、LinkデバイスのリージョントランスファーをAWS CLIで実際に行ってみたいと思います。使用するAWS CLIのコマンドはaws medialive
のtransfer-input-device
です。アカウントトランスファーと同じコマンドですね。ただし、実行時のオプションが異なります。アカウントトランスファーでは--target-customer-id
を指定しましたが、リージョントランスファーでは--target-region
を使用します。またアカウントトランスファーの場合は転送先のAWSアカウントでの承認操作が必要でしたが(accept-input-device-transfer
)、リージョントランスファーについては承認操作などは必要ありません。
AWS CLIについてはv2の現時点での最新版を使用しました。具体的には以下の環境となります。
% aws --version aws-cli/2.1.32 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off
リージョントランスファーについて、今回は東京リージョン(Tokyo/ap-northeast-1)にあるLinkデバイスを、バージニアリージョン(N. Virginia/us-east-1)へ転送してみます。
まずは転送前の状態をAWSマネジメントコンソールから確認しておきましょう。以下が東京リージョンで、1つのLinkデバイスが確認できますね。
続いてバージニアリージョンです。こちらはトランスファー前はデバイスが存在しない状態です。
AWS CLIでもlist-input-devices
コマンドで確認してみます。まずは東京リージョンです。
% aws medialive list-input-devices --region ap-northeast-1 { "InputDevices": [ { "Arn": "arn:aws:medialive:ap-northeast-1:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8", "ConnectionState": "CONNECTED", "DeviceSettingsSyncState": "SYNCED", "DeviceUpdateStatus": "UP_TO_DATE", "HdDeviceSettings": { "ActiveInput": "HDMI", "ConfiguredInput": "AUTO", "DeviceState": "IDLE", "Framerate": "60.0", "Height": 1080, "MaxBitrate": 9000000, "ScanType": "PROGRESSIVE", "Width": 1920 }, "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8", "MacAddress": "XX:XX:XX:XX:XX:XX", "Name": "Elemental Link", "NetworkSettings": { "DnsAddresses": [ "0.0.0.0" ], "Gateway": "192.168.X.1", "IpAddress": "192.168.X.X", "IpScheme": "DHCP", "SubnetMask": "255.255.255.0" }, "SerialNumber": "XXXXXXXXXXXX", "Type": "HD" } ] }
続いてバージニアリージョンです。Linkデバイスが存在していないので、具体的なデバイスの情報はありません。
% aws medialive list-input-devices --region us-east-1 { "InputDevices": [] }
それでは実際にリージョントランスファーをAWS CLIで行っていみます。transfer-input-device
コマンドを以下のように実行します。--input-device-id
にはリージョントランスファー対象となるLinkデバイスのID(hd-
ではじまるもの)を指定します。--target-region
ではトランスファー先のリージョンを指定します。今回はバージニアリージョンですので、us-east-1
を指定しています。続いて--region
オプションです、トランスファー前のLinkデバイスが存在するリージョンを指定します。こちらは何も指定しなければ~/.aws/config
など設定ファイル中で指定されたリージョンが利用されます。私もデフォルトでap-northeast-1
を設定してるので省略しても良いのですが、今回は作業中にリージョンを意識する、ということで実行時に指定することにしました。
aws medialive transfer-input-device \ --input-device-id <LinkデバイスのID> \ --target-region <転送先リージョン> \ --region <転送元リージョン>
実際に実行してみます。
% aws medialive transfer-input-device \ --input-device-id hd-XXXXXXXXXXXXXXXXXXXXc0z8 \ --target-region us-east-1 \ --region ap-northeast-1
返り値は特にありません。実行したらlist-input-devices
コマンドでデバイスの状況を確認してみましょう。transfer-input-device
コマンド実行直後は、どちらのリージョンにもデバイスが存在しない状態が一瞬確認できました。
% aws medialive list-input-devices --region ap-northeast-1 { "InputDevices": [] } % aws medialive list-input-devices --region us-east-1 { "InputDevices": [] }
1分ほど待機して、再度list-input-devicesを実行してみます。無事にLinkデバイスがバージニアリージョンに転送されていました。東京リージョンからは当然ながらLinkデバイスはなくなっています。
% aws medialive list-input-devices --region ap-northeast-1 { "InputDevices": [] } % aws medialive list-input-devices --region us-east-1 { "InputDevices": [ { "Arn": "arn:aws:medialive:us-east-1:123456789012:inputDevice:hd-XXXXXXXXXXXXXXXXXXXXc0z8", "ConnectionState": "CONNECTED", "DeviceSettingsSyncState": "SYNCED", "DeviceUpdateStatus": "UP_TO_DATE", "HdDeviceSettings": { "ActiveInput": "HDMI", "ConfiguredInput": "AUTO", "DeviceState": "IDLE", "Framerate": "60.0", "Height": 1080, "MaxBitrate": 9000000, "ScanType": "PROGRESSIVE", "Width": 1920 }, "Id": "hd-XXXXXXXXXXXXXXXXXXXXc0z8", "MacAddress": "XX:XX:XX:XX:XX:XX", "Name": "Elemental Link", "NetworkSettings": { "DnsAddresses": [ "0.0.0.0" ], "Gateway": "192.168.X.1", "IpAddress": "192.168.X.X", "IpScheme": "DHCP", "SubnetMask": "255.255.255.0" }, "SerialNumber": "XXXXXXXXXXXX", "Type": "HD" } ] }
マネジメントコンソールからも確認してみましょう。東京リージョンではLinkデバイスがなくなっています。
そして転送先であるバージニアリージョンで、Linkデバイスが確認できます。
まとめ
AWS Elemental LinkのリージョントランスファーをAWS CLIを使ってやってみました。アカウントトランスファーと同じくtransfer-input-device
コマンドを使いますが、使用するオプションが異なります。またアカウントトランスファーのように別コマンドでの承認作業などは不要です。
Linkデバイスのトランスファーまわりについてざっと振り返ってみると、まずアカウントトランスファー機能がリリースされました。この際はマネジメントコンソールならびにAWS CLI両方での操作が確認できました。その後、リージョントランスファー機能がリリースされたわけですが、マネジメントコンソールからのみの操作で、AWS CLIなどAPIでのサポートが確認できず、おやっ!?と個人的には思っておりました。しかしこのたび、晴れてリージョントランスファーについてもAPIでの実行がサポートされ、嬉しい限りです。